#!/usr/bin/perl

# ARCHIVO : send-version.pl
# AUTOR   : Jos�Anastacio Esquivel Salas
# FECHA   : 11/07/02

# DESCRIPCION : Permite la publicaci� de documentos en KnowCat y la propuesta de nuevas versiones.


require ("init.pl");
require ("dbData.pl");
require ("dbUser.pl");
require ("dbDes.pl");
require ("dbOpe.pl");
require ("dbNotes.pl");
require ("dbEvent.pl");
require ("gui.pl");

# Variables globales al CGI

local ($dbLenguaje, $IMG, %TEXTOS, $DB_NOMBRE, $ID_TEMA, $ID_ESTRUCTURA, $ID_TEMA, $ID_AUTOR);
local ($URL_CANCELAR, $ULR_RETORNO, $URL_AYUDA);


# Funciones que generan la p�ina Web
sub _ImprimeJavaScript
{

print <<EOF1;
   
    <SCRIPT LANGUAGE="Javascript1.1">
    <!-- 
    function ShowMsg(txt)
    {
	if (txt != "")
	{
	    alert(txt);
	}
	return (false);
    }

    function SubmitForm(f)
    {
	var fecha1 = new Date();
	var fecha2 = new Date(f.anyo.value, f.mes.selectedIndex, f.dia.selectedIndex + 1);
	if (fecha1.getTime() > fecha2.getTime())
	{
	    ShowMsg("$TEXTOS{'dato'.2}");
	    f.dia.focus();
	    return false;
	}
	
	if (f.anyo.value == "")
	{
	    ShowMsg("$TEXTOS{'dato'.3}");
	    f.anyo.focus();
	    return false;
	}
	if (f.comentario.value == "")
	{
	    ShowMsg("$TEXTOS{'dato'.4}");
	    f.comentario.focus();
	    return false;
	}
    }
   
    // -->
    </SCRIPT>

EOF1
    ;
}

sub _ImprimeCabecera
{
    local ($get, $alert, $paso) = @_;
    print <<EOF1;
        <HTML>
        <HEAD>
EOF1
    ;
    $fase = 1;
    if ($ID_ESTRUCTURA > 0)
    {
	$fase = 0;
    }
    &ponerTitulo("$titulo{general.1}$paso", $DB_NOMBRE, $FASE, $ID_TEMA, $ID_ESTRUCTURA);
    print "</HEAD>";
    if ($get == 0)
    {
	print "\n<BODY BGCOLOR=\"#FFFFFF\" BACKGROUND=\"../" . $IMG . "/kc.gif\" onload=\"forma.comentario.focus();\">";
    }
    else
    {
	print "\n<BODY BGCOLOR=\"#FFFFFF\" BACKGROUND=\"../" . $IMG . "/kc.gif\" onload=\"ShowMsg(\'$alert\');forma.comentario.focus();\">";
    }
}

sub _ImprimeOcultosGenerales
{
    print <<EOF1;
        <FORM NAME="forma"  METHOD="POST" ENCTYPE="multipart/form-data" ACTION ="send-proposal.pl" onsubmit = "return SubmitForm(this)">
	     <INPUT TYPE="HIDDEN" NAME="b" VALUE=$DB_NOMBRE>
	     <INPUT TYPE="HIDDEN" NAME="t" VALUE=$ID_TEMA>
	     <INPUT TYPE="HIDDEN" NAME="s" VALUE=$ID_ESTRUCTURA>
	     <INPUT TYPE="HIDDEN" NAME="u" VALUE=$ID_AUTOR>
EOF1
    ;
}


sub _ImprimeCabeceraFormulario
{  
    local ($nombreTema) = @_;

    print <<EOF1;
        <TABLE BGCOLOR=$spaceColors{'dark_'.1} WIDTH=100%>
	<TD>
	    <center>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2">$TEXTOS{'dato'.5}</font></b>
	    <BR>
	    <b><font color = $titleColors{'bright_'.1} face="MS Sans Serif" size="2">$nombreTema</font></b>
	    </center>
	    <p><hr>
	</TD>
EOF1
    ;
}


sub _ImprimeFormulario1
{
    local ($anyo, $mes, $dia, $comentario) = @_;
    &ImprimeBarraHerramientas($dbLenguaje,1,1110,$TEXTOS{'dato'.6},1,$URL_CANCELAR,$URL_RETORNO,$URL_AYUDA);
    print "<TABLE BGCOLOR=$spaceColors{'bright_'.1} border=\"0\" width=\"100%\">";
    print "\n<TD ALIGN=\"CENTER\"><SELECT NAME=\"dia\">";
    foreach $i (01 .. 31)
    {
      $j = $i;
      if ($i < 10)
      {
        $j = '0'.$i
      }
      if ($dia == $i)
      {
        print "\n<OPTION SELECTED VALUE=\"$j\">$i";
      }
      else
      {
        print "\n<OPTION VALUE=\"$j\">$i";
      }
    }
    print "\n</SELECT>&nbsp;/&nbsp;";
    print "\n<SELECT NAME=\"mes\">";
    foreach $i (1 .. 12)
    {
      $j = $i;
      if ($i < 10)
      {
        $j = '0'.$i
      }
      if ($mes == $i)
      {
        print "\n<OPTION SELECTED VALUE=\"$j\">$i";
      }
      else
      {
        print "\n<OPTION VALUE=\"$j\">$i";
      }
    }
    print "\n</SELECT>&nbsp;/&nbsp;";
    print "\n<INPUT TYPE=\"TEXT\" NAME=\"anyo\" MAXLENGTH=\"4\" SIZE=\"4\" VALUE=\"$anyo\"></TD>";
    print "\n<TR><TD ALIGN=\"CENTER\"><TEXTAREA NAME=\"comentario\" ROWS=10>$comentario</TEXTAREA></TD>";
    print "<table></table>";

}




sub _ImprimeMensaje
{
    local ($nombre_tema, $msg, $error) = @_;

    $color = "green";
    if ($error == 1)
    {
	$color = "red";
    }
   
 print <<EOF1;
    <FORM NAME="forma"  METHOD="GET" TARGET="inform" ACTION ="inform.pl">
	     <INPUT TYPE="HIDDEN" NAME="b" VALUE=$DB_NOMBRE>
	     <INPUT TYPE="HIDDEN" NAME="t" VALUE=$ID_TEMA>
	     <INPUT TYPE="HIDDEN" NAME="s" VALUE=$ID_ESTRUCTURA>      
EOF1
    ;
    &_ImprimeCabeceraFormulario ($nombre_tema);
    &ImprimeBarraHerramientas($dbLenguaje,1,0001,$TEXTOS{'dato'.7},1,$URL_CANCELAR,$URL_RETORNO,$URL_AYUDA);
print <<EOFEND1;
    <TABLE BGCOLOR=$spaceColors{'bright_'.1} WIDTH=100%>
	<TD ALIGN=CENTER><FONT COLOR="$color">        
	<B> $msg </B></FONT>
    </TABLE></table>
    </FORM>
EOFEND1
  ;

}


sub _ImprimeFinal
{  
    print <<EOF1;       
	</BODY>
	</HTML>
EOF1
    ;
}




#Funciones GET y POST

sub _ProcedimientoPost
{
    local ($directorio, $pathDocumentos, $urlServidor);
    local (%datosTema, $opcion, $nuevo, $formulario);
    
    use CGI;

    $q = new CGI;

    #Se obtienen los datos generales que han llegado al formulario
   
    $DB_NOMBRE       = $q->param("b");
    $ID_TEMA         = $q->param("t");
    $ID_ESTRUCTURA   = $q->param("s");
    $ID_AUTOR        = $q->param("u");

    $dia             = $q->param("dia");
    $mes             = $q->param("mes");
    $anyo            = $q->param("anyo");
    $comentario      = $q->param("comentario");
   

    #Obteniendo datos del tema y lenguaje a manejar
    ($dbLenguaje, $IMG) = &get_language($DB_NOMBRE);
    %datosTema = &_ObtenerDatosTema($DB_NOMBRE, $ID_TEMA, $ID_ESTRUCTURA);
    
    %TEXTOS = &get_text($dbLenguaje, "'send-proposal.pl'");

    $URL_CANCELAR     =  "$inform\" TARGET=\"inform";
    $URL_RETORNO      =  "javascript:history.back()";
    $URL_AYUDA        =   &url_help($DB_NOMBRE,'continfo.htm#proponer_documento');

    #Antes de a�dir nuevos datos ver si esta la base de datos ocupada o no
    $busy = &get_busy($DB_NOMBRE);
  
    #Si no esta ocupada se a�den los datos
    if ($busy == 0)
    {
	$dateEnd = $dia . '/' . $mes . '/' . $anyo;
	$dateEnd = $anyo . '-' . $mes . '-' . $dia;
	$idProposal = &insert_proposal ($DB_NOMBRE, $ID_TEMA, $ID_AUTOR, $dateEnd, $comentario);
	#$idProposal = 12;
	if ($idProposal == -1)
	{
	    #Hay un error
	    $error = 1;
	    #Obtener el mensaje a mostrar
	    %dMsg = &get_data($dbLenguaje, "Message", "name", "\'nrp\'");
	}
	else
	{
	    # ************* Lineas a�didas para la notificacion de eventos ************************
	    
	    $Datos{Accion} 	        = 1;
	    $Datos{Autor}		= $ID_AUTOR;
	    $Datos{Comentario} 	        = $comentario;
	    $Datos{Fecha}		= $dateEnd;
	    $Datos{Tema}		= $ID_TEMA;
	    $Datos{Estructura}	        = $ID_ESTRUCTURA;
	
	    &notifyEvent ($DB_NOMBRE, %Datos);
	    
	    # ************* Fin de las lineas a�didas para la notificacion ************************
	    
            #Se actualiza tabla Historic (updateT = Historic)
	    &insert_historic ($DB_NOMBRE, "\'AddProposal\'", $ID_AUTOR, $ID_TEMA, 0, $idProposal);
	
	    $error = 0;
	    #Obtener el mensaje a mostrar
	    %dMsg = &get_data($dbLenguaje, "Message", "name", "\'updateData\'");
	}
	&_ImprimeCabecera("","","");
	&_ImprimeMensaje($datosTema{'nameTopic'.1}, $dMsg{'txt'.1}, $error);
	&_ImprimeFinal;
    }
    else
    {
	%dMsgC = &get_data($dbLenguaje, "Message", "name", "\'busyDB\'");
	$alert = $dMsgC{'txt'.1};
	&_ImprimeJavaScript;
	&_ImprimeCabecera(1,$alert,"");
	&_ImprimeOcultosGenerales (1, $operacion);
	&_ImprimeCabeceraFormulario ($datosTema{'nameTopic'.1});
	&_ImprimeFormulario1($anyo, $mes, $dia, $comentario);
	&_ImprimeFinal;
    }
}

sub _ProcedimientoGet
{
    local ($noPaso, %input, %datosTema);
    
    #Se procesa la entrada al script
    %input = &parse_input;
    
    #Se obtienen los datos de entrada
    $DB_NOMBRE      = $input{b};  
    $ID_TEMA        = $input{t};
    $ID_ESTRUCTURA  = $input{s};
    $ID_AUTOR       = $input{u};
   
    #Obteniendo datos del tema y lenguaje a manejar
    ($dbLenguaje, $IMG) = &get_language($DB_NOMBRE);

    %TEXTOS = &get_text($dbLenguaje, "'send-proposal.pl'");

    %datosTema = &_ObtenerDatosTema($DB_NOMBRE, $ID_TEMA, $ID_ESTRUCTURA);
    
    if ($ID_ESTRUCTURA == 0)
    {
	$inform = $path . "inform.pl?b=$DB_NOMBRE&t=$ID_TEMA&s=$ID_ESTRUCTURA";
	$descriptions = $path . "descriptions.pl?b=$DB_NOMBRE&t=$ID_TEMA&s=$ID_ESTRUCTURA";
    }
    if ($PHASE == 1)
    {
	$inform = $path . "inform.pl?b=$DB_NOMBRE&t=$ID_TEMA";
	$descriptions = $path . "descriptions.pl?b=$DB_NOMBRE&t=$ID_ESTRUCTURA";
    }

    $URL_CANCELAR     =  "$inform\" TARGET=\"inform";
    $URL_RETORNO      =  "javascript:history.back()";
    $URL_AYUDA        =   &url_help($DB_NOMBRE,'continfo.htm#proponer_documento');

    $hoyInNum = &get_dateInNum();
    $hoy = &get_date();
    ($anyo, $mes, $dia) = split (/-/, $hoy);

    $URL_CANCELAR     =  "$inform\" TARGET=\"inform";
    $URL_RETORNO      =  "javascript:history.back()";
    $URL_AYUDA        =   &url_help($DB_NOMBRE,'continfo.htm#proponer_documento');
   
    &_ImprimeJavaScript;
    &_ImprimeCabecera(0, ""," (1/1)");
    &_ImprimeOcultosGenerales (1, $operacion);
    &_ImprimeCabeceraFormulario ($datosTema{'nameTopic'.1});
    &_ImprimeFormulario1($anyo, $mes, $dia+1, $comentario);
    &_ImprimeFinal;
}    


sub _Main
{
    #Imprime cabecera
    &print_header;
    if ('POST' eq $ENV{'REQUEST_METHOD'})
    {
	&_ProcedimientoPost;
    }  
    else
    {
	&_ProcedimientoGet;
    }
}

#******************************************************



# Funci� Main
&_Main;




#******************************************************

# Funciones auxiliares
sub _ObtenerDatosTema
{
    local($dbNombre, $idTema, $idEstructura) = @_;
    local(%dTema);

    #Se obtienen los datos del tema en cuestion
    if ($idEstructura > 0)
    {
	%dTema = &get_data($dbNombre, "Struct", "idTopic", $idTema);
    }
    else
    {
	%dTema = &get_data($dbNombre, "Topic", "idTopic", $idTema);
    }

    return %dTema;
  
}
